package com.jt.controller;

import com.jt.pojo.User;
import org.omg.PortableInterceptor.USER_EXCEPTION;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

@RestController
@CrossOrigin        //主要解决跨域的问题
@RequestMapping("/axios")
public class AxiosController {

    /**
     * 需求：根据ID查询用户信息
     * URL：http://localhost:8080/axios/getUserById?id=100
     * 参数：  id=100
     * 返回值：User对象的JSON   伪造一个User对象
     */

    @RequestMapping("/getUserById")
    public User getUserById(Integer id){

        User user = new User();
        user.setId(id);
        user.setName("好好学习");
        user.setAge(18);
        user.setSex("男");

        return user;
    }

    /**
     * 需求：根据ID查询用户信息
     * URL：http://localhost:8080/axios/getUserByNA?id=100&name=张三
     * 参数：  id=xxx  name=xxx
     * 返回值：List[user1,user2]
     */


    @RequestMapping("/getUserByNA")
    public List<User> getUserByNA(User user){
        List<User> list = new ArrayList<>();
        list.add(user);   //简化赋值
        list.add(user);
        return list;
    }
    /**
     * 需求：
     * URL：http://localhost:8080/axios/findUserByNS/tomcat/男
     * 参数：  name/sex
     * 返回值：List<User>
     */

    @RequestMapping("/findUserByNS/{name}/{sex}")//调用set方法为属性赋值
    public List<User> findUserNS(User user){

        List<User> list = new ArrayList<>();
        list.add(user);
        list.add(user);
        return list;

    }

    /**
     * URL:"http://localhost:8080/axios/saveUser"
     * 参数：{"id":100."name":"猫","age":12,"sex":"母"} json串
     *
     * URL：http://xxx/sxios/saveUser?id=xxx&name=xxx
     * 返回值："新增用户信息"
     * 难点：
     *    1.Get请求数据是通过？key=value&key2=value2的方式获取
     *    post请求  数据是json串，数据结构不同，所以不能使用User对象接收
     *    2.JSON串想办法转换为User对象
     *       User转化为JSON串  @ResponseBody
     *       JSON串转化为User  @RequestBody
     *    3.JSON串转化   要求json串中的属性与对象中的属性一致
     *                  并且赋值时调用对象的set方法
     *    4.@RequestMapping可以支持任意类型的请求。但是这样的写法"不安全"。
     *      要求只接收post类型的请求
     *      @PostMapping("/saveUser")
     *      @GetMapping
     *      @PutMapping
     *      @DeleteMapping
     *
     * @param user
     * @return
     */


//    @RequestMapping(value = "/saveUser",method = RequestMethod.POST)
    @PostMapping("/saveUser")
    public String saveUser(@RequestBody User user){

        System.out.println(user);
        return "新增用户成功";
    }


    /**
     * URL:"http://localhost:8080/axios/updateUser"
     * 参数：JSON串
     * 返回值:String
     * @param user
     * @return
     */

    @PutMapping("/updateUser")
    public String updateUser(@RequestBody User user){

        System.out.println(user);
        return "修改用户成功";
    }
}
